{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Configuring pandas"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# import numpy and pandas\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "\n",
    "# used for dates\n",
    "import datetime\n",
    "from datetime import datetime, date\n",
    "\n",
    "# Set formattign options\n",
    "pd.set_option('display.notebook_repr_html', False)\n",
    "pd.set_option('display.max_columns', 7)\n",
    "pd.set_option('display.max_rows', 10)\n",
    "pd.set_option('display.width', 60)\n",
    "\n",
    "# bring in matplotlib for graphics\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# The datetime, day, and time objects"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "datetime.datetime(2014, 12, 15, 0, 0)"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# datetime object for Dec 15 2014\n",
    "datetime(2014, 12, 15)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "datetime.datetime(2014, 12, 15, 17, 30)"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# specific date and also with a time of 5:30 pm\n",
    "datetime(2014, 12, 15, 17, 30)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "datetime.datetime(2017, 6, 29, 12, 32, 22, 421827)"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# get the local \"now\" (date and time)\n",
    "# can take a timezone, but that's not demonstrated here\n",
    "datetime.now()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "datetime.date(2014, 12, 15)"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# a date without time can be represented\n",
    "# by creating a date using a datetime object\n",
    "datetime.date(datetime(2014, 12, 15))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "datetime.date(2017, 6, 29)"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# get just the current date\n",
    "datetime.now().date()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "datetime.time(17, 30)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# get just a time from a datetime\n",
    "datetime.time(datetime(2014, 12, 15, 17, 30))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "datetime.time(12, 32, 22, 457375)"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# get the current local time\n",
    "datetime.now().time()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Timestamp objects"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2014-12-15 00:00:00')"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# a timestamp representing a specific date\n",
    "pd.Timestamp('2014-12-15')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2014-12-15 17:30:00')"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# a timestamp with both date and time\n",
    "pd.Timestamp('2014-12-15 17:30')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2017-06-29 17:30:00')"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# timestamp with just a time\n",
    "# which adds in the current local date\n",
    "pd.Timestamp('17:30')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2017-06-29 12:32:22.490917')"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# get the current date and time (now)\n",
    "pd.Timestamp(\"now\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Timedelta"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "datetime.datetime(2014, 12, 1, 0, 0)"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# what is one day from 2014-11-30?\n",
    "today = datetime(2014, 11, 30)\n",
    "tomorrow = today + pd.Timedelta(days=1)\n",
    "tomorrow"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "datetime.timedelta(4)"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# how many days between these two dates?\n",
    "date1 = datetime(2014, 12, 2)\n",
    "date2 = datetime(2014, 11, 28)\n",
    "date1 - date2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# The DatetimeIndex"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2014-08-01    0.123357\n",
       "2014-08-02   -0.979243\n",
       "dtype: float64"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# create a very simple time-series with two index labels\n",
    "# and random values\n",
    "dates = [datetime(2014, 8, 1), datetime(2014, 8, 2)]\n",
    "ts = pd.Series(np.random.randn(2), dates)\n",
    "ts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "pandas.core.indexes.datetimes.DatetimeIndex"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# what is the type of the index?\n",
    "type(ts.index)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "pandas._libs.tslib.Timestamp"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# and we can see it is a collection of timestamps\n",
    "type(ts.index[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2014-08-01    0.469112\n",
       "2014-08-02   -0.282863\n",
       "dtype: float64"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# create from just a list of dates as strings!\n",
    "np.random.seed(123456)\n",
    "dates = ['2014-08-01', '2014-08-02']\n",
    "ts = pd.Series(np.random.randn(2), dates)\n",
    "ts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2014-08-01 00:00:00\n",
      "2014-08-02 00:00:00\n",
      "2014-08-03 00:00:00\n",
      "NaT\n"
     ]
    }
   ],
   "source": [
    "# convert a sequence of objects to a DatetimeIndex\n",
    "dti = pd.to_datetime(['Aug 1, 2014', \n",
    "                      '2014-08-02', \n",
    "                      '2014.8.3', \n",
    "                      None])\n",
    "for l in dti: print (l)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# this is a list of objects, not timestamps...\n",
    "# Throws an error in 0.20.1\n",
    "# pd.to_datetime(['Aug 1, 2014', 'foo'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2014-08-01', 'NaT'], dtype='datetime64[ns]', freq=None)"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# force the conversion, NaT for items that dont work\n",
    "pd.to_datetime(['Aug 1, 2014', 'foo'], errors=\"coerce\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2014-08-01    0.469112\n",
       "2014-08-02   -0.282863\n",
       "2014-08-03   -1.509059\n",
       "2014-08-04   -1.135632\n",
       "2014-08-05    1.212112\n",
       "2014-08-06   -0.173215\n",
       "2014-08-07    0.119209\n",
       "2014-08-08   -1.044236\n",
       "2014-08-09   -0.861849\n",
       "2014-08-10   -2.104569\n",
       "Freq: D, dtype: float64"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# create a range of dates starting at a specific date\n",
    "# and for a specific number of days, creating a Series\n",
    "np.random.seed(123456)\n",
    "periods = pd.date_range('8/1/2014', periods=10)\n",
    "date_series = pd.Series(np.random.randn(10), index=periods)\n",
    "date_series"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2014-08-04   -1.135632\n",
       "2014-08-05    1.212112\n",
       "2014-08-06   -0.173215\n",
       "2014-08-07    0.119209\n",
       "Freq: D, dtype: float64"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# slice by location\n",
    "subset = date_series[3:7]\n",
    "subset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2014-08-04       10\n",
       "2014-08-05      100\n",
       "2014-08-06     1000\n",
       "2014-08-07    10000\n",
       "Freq: D, dtype: int64"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# a Series to demonstrate alignment\n",
    "s2 = pd.Series([10, 100, 1000, 10000], subset.index)\n",
    "s2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2014-08-01             NaN\n",
       "2014-08-02             NaN\n",
       "2014-08-03             NaN\n",
       "2014-08-04        8.864368\n",
       "2014-08-05      101.212112\n",
       "2014-08-06      999.826785\n",
       "2014-08-07    10000.119209\n",
       "2014-08-08             NaN\n",
       "2014-08-09             NaN\n",
       "2014-08-10             NaN\n",
       "Freq: D, dtype: float64"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# demonstrate alignment by date on a subset of items\n",
    "date_series + s2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.2121120250208506"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# lookup item by a string representing a date\n",
    "date_series['2014-08-05']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2014-08-05    1.212112\n",
       "2014-08-06   -0.173215\n",
       "2014-08-07    0.119209\n",
       "Freq: D, dtype: float64"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# slice between two dates specified by string representing dates\n",
    "date_series['2014-08-05':'2014-08-07']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2013-01-01    0\n",
       "2013-01-02    0\n",
       "2013-01-03    0\n",
       "2013-01-04    0\n",
       "2013-01-05    0\n",
       "             ..\n",
       "2013-12-27    0\n",
       "2013-12-28    0\n",
       "2013-12-29    0\n",
       "2013-12-30    0\n",
       "2013-12-31    0\n",
       "Freq: D, Length: 365, dtype: int64"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# a two year range of daily data in a Series\n",
    "# only select those in 2013\n",
    "s3 = pd.Series(0, pd.date_range('2013-01-01', '2014-12-31'))\n",
    "s3['2013']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2014-05-01    0\n",
       "2014-05-02    0\n",
       "2014-05-03    0\n",
       "2014-05-04    0\n",
       "2014-05-05    0\n",
       "             ..\n",
       "2014-05-27    0\n",
       "2014-05-28    0\n",
       "2014-05-29    0\n",
       "2014-05-30    0\n",
       "2014-05-31    0\n",
       "Freq: D, Length: 31, dtype: int64"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 31 items for May 2014\n",
    "s3['2014-05'] "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2014-08-01    0\n",
       "2014-08-02    0\n",
       "2014-08-03    0\n",
       "2014-08-04    0\n",
       "2014-08-05    0\n",
       "             ..\n",
       "2014-09-26    0\n",
       "2014-09-27    0\n",
       "2014-09-28    0\n",
       "2014-09-29    0\n",
       "2014-09-30    0\n",
       "Freq: D, Length: 61, dtype: int64"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# items between two months\n",
    "s3['2014-08':'2014-09']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Creating time-series data with specific frequencies"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2014-08-01 00:00:00    0.469112\n",
       "2014-08-01 00:01:00   -0.282863\n",
       "2014-08-01 00:02:00   -1.509059\n",
       "2014-08-01 00:03:00   -1.135632\n",
       "2014-08-01 00:04:00    1.212112\n",
       "Freq: T, dtype: float64"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# generate a Series at one minute intervals\n",
    "np.random.seed(123456)\n",
    "bymin = pd.Series(np.random.randn(24*60*90), \n",
    "                  pd.date_range('2014-08-01', \n",
    "                                '2014-10-29 23:59',\n",
    "                                freq='T'))\n",
    "bymin[:5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2014-08-01 00:02:00   -1.509059\n",
       "2014-08-01 00:03:00   -1.135632\n",
       "2014-08-01 00:04:00    1.212112\n",
       "2014-08-01 00:05:00   -0.173215\n",
       "2014-08-01 00:06:00    0.119209\n",
       "2014-08-01 00:07:00   -1.044236\n",
       "Freq: T, dtype: float64"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# slice down to the minute\n",
    "bymin['2014-08-01 00:02':'2014-08-01 00:07']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2014-08-29', '2014-09-01', '2014-09-02',\n",
       "               '2014-09-03', '2014-09-04', '2014-09-05'],\n",
       "              dtype='datetime64[ns]', freq='B')"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# generate a series based upon business days\n",
    "days = pd.date_range('2014-08-29', '2014-09-05', freq='B')\n",
    "days"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2014-08-01 12:10:01',\n",
       "               '2014-08-01 12:10:02',\n",
       "               '2014-08-01 12:10:03',\n",
       "               '2014-08-01 12:10:04',\n",
       "               '2014-08-01 12:10:05'],\n",
       "              dtype='datetime64[ns]', freq='S')"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# periods will use the frequency as the increment\n",
    "pd.date_range('2014-08-01 12:10:01', freq='S', periods=5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Date offsets"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['2014-08-29T00:00:00.000000000', '2014-09-01T00:00:00.000000000',\n",
       "       '2014-09-02T00:00:00.000000000', '2014-09-03T00:00:00.000000000',\n",
       "       '2014-09-04T00:00:00.000000000', '2014-09-05T00:00:00.000000000'], dtype='datetime64[ns]')"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# get all business days between and inclusive of these two dates\n",
    "dti = pd.date_range('2014-08-29', '2014-09-05', freq='B')\n",
    "dti.values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<BusinessDay>"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# check the frequency is BusinessDay\n",
    "dti.freq"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2014-08-30 00:00:00')"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# calculate a one day offset from 2014-8-29\n",
    "d = datetime(2014, 8, 29)\n",
    "do = pd.DateOffset(days = 1) \n",
    "d + do"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2014-09-01 00:00:00')"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# import the data offset types\n",
    "from pandas.tseries.offsets import *\n",
    "# calculate one business day from 2014-8-31\n",
    "d + BusinessDay()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2014-09-02 00:00:00')"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# determine 2 business days from 2014-8-29\n",
    "d + 2 * BusinessDay()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2014-09-30 00:00:00')"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# what is the next business month end\n",
    "# from a specific date?\n",
    "d + BMonthEnd()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2014-09-30 00:00:00')"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# calculate the next month end by\n",
    "# rolling forward from a specific date\n",
    "BMonthEnd().rollforward(datetime(2014, 9, 15))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2014-08-26 00:00:00')"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# calculate the date of the Tuesday previous\n",
    "# to a specified date \n",
    "d - Week(weekday = 1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Anchored Offsets"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['2014-06-04T00:00:00.000000000', '2014-06-11T00:00:00.000000000',\n",
       "       '2014-06-18T00:00:00.000000000', '2014-06-25T00:00:00.000000000',\n",
       "       '2014-07-02T00:00:00.000000000', '2014-07-09T00:00:00.000000000',\n",
       "       '2014-07-16T00:00:00.000000000', '2014-07-23T00:00:00.000000000',\n",
       "       '2014-07-30T00:00:00.000000000'], dtype='datetime64[ns]')"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# calculate all Wednesdays between 2014-06-01\n",
    "# and 2014-08-31\n",
    "wednesdays = pd.date_range('2014-06-01', \n",
    "                           '2014-07-31', freq=\"W-WED\")\n",
    "wednesdays.values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['2014-03-03T00:00:00.000000000', '2014-06-02T00:00:00.000000000',\n",
       "       '2014-09-01T00:00:00.000000000', '2014-12-01T00:00:00.000000000'], dtype='datetime64[ns]')"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# what are all of the business quarterly end\n",
    "# dates in 2014?\n",
    "qends = pd.date_range('2014-01-01', '2014-12-31', \n",
    "                      freq='BQS-JUN')\n",
    "qends.values"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# The Period object"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Period('2014-08', 'M')"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# create a period representing a month of time\n",
    "# starting in August 2014\n",
    "aug2014 = pd.Period('2014-08', freq='M')\n",
    "aug2014"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(Timestamp('2014-08-01 00:00:00'), Timestamp('2014-08-31 23:59:59.999999999'))"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# examine the start and end times of this period\n",
    "aug2014.start_time, aug2014.end_time"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Period('2014-09', 'M')"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# calculate the period that is one frequency\n",
    "# unit of the aug2014 period further along in time\n",
    "# This happens to be September 2014\n",
    "sep2014 = aug2014 + 1\n",
    "sep2014"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(Timestamp('2014-09-01 00:00:00'), Timestamp('2014-09-30 23:59:59.999999999'))"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sep2014.start_time, sep2014.end_time"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# The PeriodIndex"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "PeriodIndex(['2013-01', '2013-02', '2013-03', '2013-04',\n",
       "             '2013-05', '2013-06', '2013-07', '2013-08',\n",
       "             '2013-09', '2013-10', '2013-11', '2013-12'],\n",
       "            dtype='period[M]', freq='M')"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# create a period index representing all monthly boundaries in 2013\n",
    "mp2013 = pd.period_range('1/1/2013', '12/31/2013', freq='M')\n",
    "mp2013"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2013-01-01 00:00:00 2013-01-31 23:59:59.999999999\n",
      "2013-02-01 00:00:00 2013-02-28 23:59:59.999999999\n",
      "2013-03-01 00:00:00 2013-03-31 23:59:59.999999999\n",
      "2013-04-01 00:00:00 2013-04-30 23:59:59.999999999\n",
      "2013-05-01 00:00:00 2013-05-31 23:59:59.999999999\n",
      "2013-06-01 00:00:00 2013-06-30 23:59:59.999999999\n",
      "2013-07-01 00:00:00 2013-07-31 23:59:59.999999999\n",
      "2013-08-01 00:00:00 2013-08-31 23:59:59.999999999\n",
      "2013-09-01 00:00:00 2013-09-30 23:59:59.999999999\n",
      "2013-10-01 00:00:00 2013-10-31 23:59:59.999999999\n",
      "2013-11-01 00:00:00 2013-11-30 23:59:59.999999999\n",
      "2013-12-01 00:00:00 2013-12-31 23:59:59.999999999\n"
     ]
    }
   ],
   "source": [
    "# loop through all period objects in the index\n",
    "# printing start and end time for each\n",
    "for p in mp2013: \n",
    "    print (\"{0} {1}\".format(p.start_time, p.end_time))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2013-01    0.469112\n",
       "2013-02   -0.282863\n",
       "2013-03   -1.509059\n",
       "2013-04   -1.135632\n",
       "2013-05    1.212112\n",
       "Freq: M, dtype: float64"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# create a Series with a PeriodIndex\n",
    "np.random.seed(123456)\n",
    "ps = pd.Series(np.random.randn(12), mp2013)\n",
    "ps[:5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2013-01    0.469112\n",
       "2013-02   -0.282863\n",
       "2013-03   -1.509059\n",
       "2013-04   -1.135632\n",
       "2013-05    1.212112\n",
       "             ...   \n",
       "2014-08   -1.087401\n",
       "2014-09   -0.673690\n",
       "2014-10    0.113648\n",
       "2014-11   -1.478427\n",
       "2014-12    0.524988\n",
       "Freq: M, Length: 24, dtype: float64"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# create a Series with a PeriodIndex and which\n",
    "# represents all calendar month periods in 2013 and 2014\n",
    "np.random.seed(123456)\n",
    "ps = pd.Series(np.random.randn(24), \n",
    "               pd.period_range('1/1/2013', \n",
    "                               '12/31/2014', freq='M'))\n",
    "ps"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.567020349793672"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# get value for period represented with 2014-06\n",
    "ps['2014-06']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2014-01    0.721555\n",
       "2014-02   -0.706771\n",
       "2014-03   -1.039575\n",
       "2014-04    0.271860\n",
       "2014-05   -0.424972\n",
       "             ...   \n",
       "2014-08   -1.087401\n",
       "2014-09   -0.673690\n",
       "2014-10    0.113648\n",
       "2014-11   -1.478427\n",
       "2014-12    0.524988\n",
       "Freq: M, Length: 12, dtype: float64"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# get values for all periods in 2014\n",
    "ps['2014']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2014-03   -1.039575\n",
       "2014-04    0.271860\n",
       "2014-05   -0.424972\n",
       "2014-06    0.567020\n",
       "Freq: M, dtype: float64"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# all values between (and including) March and June 2014\n",
    "ps['2014-03':'2014-06']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Handling holidays using calendars"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2014-01-01 00:00:00\n",
      "2014-01-20 00:00:00\n",
      "2014-02-17 00:00:00\n",
      "2014-05-26 00:00:00\n",
      "2014-07-04 00:00:00\n",
      "2014-09-01 00:00:00\n",
      "2014-10-13 00:00:00\n",
      "2014-11-11 00:00:00\n",
      "2014-11-27 00:00:00\n",
      "2014-12-25 00:00:00\n"
     ]
    }
   ],
   "source": [
    "# demonstrate using the US federal holiday calendar\n",
    "# first need to import it\n",
    "from pandas.tseries.holiday import *\n",
    "# create it and show what it considers holidays\n",
    "cal = USFederalHolidayCalendar()\n",
    "for d in cal.holidays(start='2014-01-01', end='2014-12-31'):\n",
    "    print (d)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2014-09-02 00:00:00')"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# create CustomBusinessDay object based on the federal calendar\n",
    "cbd = CustomBusinessDay(holidays=cal.holidays())\n",
    "\n",
    "# now calc next business day from 2014-8-29\n",
    "datetime(2014, 8, 29) + cbd"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Normalizing timestamps using time zones"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(Timestamp('2017-06-29 12:32:23.256410'), True)"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# get the current local time and demonstrate there is no\n",
    "# timezone info by default\n",
    "now = pd.Timestamp('now')\n",
    "now, now.tz is None"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(True, True)"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# default DatetimeIndex and its Timestamps do not have\n",
    "# time zone information\n",
    "rng = pd.date_range('3/6/2012 00:00', periods=15, freq='D')\n",
    "rng.tz is None, rng[0].tz is None"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['Africa/Abidjan',\n",
       " 'Africa/Accra',\n",
       " 'Africa/Addis_Ababa',\n",
       " 'Africa/Algiers',\n",
       " 'Africa/Asmara']"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# import common timezones from pytz\n",
    "from pytz import common_timezones\n",
    "# report the first 5\n",
    "common_timezones[:5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(Timestamp('2017-06-29 12:32:23.407610'),\n",
       " Timestamp('2017-06-29 12:32:23.407610+0000', tz='UTC'))"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# get now, and now localized to UTC\n",
    "now = Timestamp(\"now\")\n",
    "local_now = now.tz_localize('UTC')\n",
    "now, local_now"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2014-08-01 12:00:00-0600', tz='US/Mountain')"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# localize a timestamp to US/Mountain time zone\n",
    "tstamp = Timestamp('2014-08-01 12:00:00', tz='US/Mountain')\n",
    "tstamp"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(<DstTzInfo 'US/Mountain' LMT-1 day, 17:00:00 STD>,\n",
       " <DstTzInfo 'US/Mountain' MST-1 day, 17:00:00 STD>)"
      ]
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# create a DatetimeIndex using a timezone\n",
    "rng = pd.date_range('3/6/2012 00:00:00', \n",
    "                    periods=10, freq='D', tz='US/Mountain')\n",
    "rng.tz, rng[0].tz"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(Timestamp('2017-06-29 12:32:23.407610-0600', tz='US/Mountain'),\n",
       " Timestamp('2017-06-29 12:32:23.407610-0400', tz='US/Eastern'))"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# show use of timezone objects\n",
    "# need to reference pytz\n",
    "import pytz\n",
    "# create an object for two different timezones\n",
    "mountain_tz = pytz.timezone(\"US/Mountain\")\n",
    "eastern_tz = pytz.timezone(\"US/Eastern\")\n",
    "# apply each to 'now'\n",
    "mountain_tz.localize(now), eastern_tz.localize(now)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2014-08-01 00:00:00-06:00    0\n",
       "2014-08-01 01:00:00-06:00    1\n",
       "2014-08-01 02:00:00-06:00    2\n",
       "2014-08-01 03:00:00-06:00    3\n",
       "2014-08-01 04:00:00-06:00    4\n",
       "Freq: H, dtype: int64"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# create two Series, same start, same periods, same frequencies,\n",
    "# each with a different timezone\n",
    "s_mountain = Series(np.arange(0, 5),\n",
    "                    index=pd.date_range('2014-08-01', \n",
    "                                        periods=5, freq=\"H\", \n",
    "                                        tz='US/Mountain'))\n",
    "s_eastern = Series(np.arange(0, 5), \n",
    "                   index=pd.date_range('2014-08-01', \n",
    "                                       periods=5, freq=\"H\", \n",
    "                                       tz='US/Eastern'))\n",
    "s_mountain"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2014-08-01 00:00:00-04:00    0\n",
       "2014-08-01 01:00:00-04:00    1\n",
       "2014-08-01 02:00:00-04:00    2\n",
       "2014-08-01 03:00:00-04:00    3\n",
       "2014-08-01 04:00:00-04:00    4\n",
       "Freq: H, dtype: int64"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "s_eastern"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2014-08-01 04:00:00+00:00    NaN\n",
       "2014-08-01 05:00:00+00:00    NaN\n",
       "2014-08-01 06:00:00+00:00    2.0\n",
       "2014-08-01 07:00:00+00:00    4.0\n",
       "2014-08-01 08:00:00+00:00    6.0\n",
       "2014-08-01 09:00:00+00:00    NaN\n",
       "2014-08-01 10:00:00+00:00    NaN\n",
       "Freq: H, dtype: float64"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# add the two Series. This only results in three items being aligned\n",
    "s_eastern + s_mountain"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2014-07-31 21:00:00-07:00    0\n",
       "2014-07-31 22:00:00-07:00    1\n",
       "2014-07-31 23:00:00-07:00    2\n",
       "2014-08-01 00:00:00-07:00    3\n",
       "2014-08-01 01:00:00-07:00    4\n",
       "Freq: H, dtype: int64"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# convert s1 from US/Eastern to US/Pacific\n",
    "s_pacific = s_eastern.tz_convert(\"US/Pacific\")\n",
    "s_pacific"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2014-08-01 04:00:00+00:00    NaN\n",
       "2014-08-01 05:00:00+00:00    NaN\n",
       "2014-08-01 06:00:00+00:00    2.0\n",
       "2014-08-01 07:00:00+00:00    4.0\n",
       "2014-08-01 08:00:00+00:00    6.0\n",
       "2014-08-01 09:00:00+00:00    NaN\n",
       "2014-08-01 10:00:00+00:00    NaN\n",
       "Freq: H, dtype: float64"
      ]
     },
     "execution_count": 69,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# this will be the same result as s_eastern + s_mountain\n",
    "# as the timezones still get aligned to be the same\n",
    "s_mountain + s_pacific"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Shifting and lagging "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2014-08-01    1.0\n",
       "2014-08-02    2.0\n",
       "2014-08-03    2.5\n",
       "2014-08-04    1.5\n",
       "2014-08-05    0.5\n",
       "Freq: D, dtype: float64"
      ]
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# create a Series to work with\n",
    "np.random.seed(123456)\n",
    "ts = Series([1, 2, 2.5, 1.5, 0.5],\n",
    "            pd.date_range('2014-08-01', periods=5))\n",
    "ts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2014-08-01    NaN\n",
       "2014-08-02    1.0\n",
       "2014-08-03    2.0\n",
       "2014-08-04    2.5\n",
       "2014-08-05    1.5\n",
       "Freq: D, dtype: float64"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# shift forward one day\n",
    "ts.shift(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2014-08-01    2.5\n",
       "2014-08-02    1.5\n",
       "2014-08-03    0.5\n",
       "2014-08-04    NaN\n",
       "2014-08-05    NaN\n",
       "Freq: D, dtype: float64"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# lag two days\n",
    "ts.shift(-2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2014-08-01         NaN\n",
       "2014-08-02    2.000000\n",
       "2014-08-03    1.250000\n",
       "2014-08-04    0.600000\n",
       "2014-08-05    0.333333\n",
       "Freq: D, dtype: float64"
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# calculate daily percentage change\n",
    "ts / ts.shift(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2014-08-04    1.0\n",
       "2014-08-04    2.0\n",
       "2014-08-04    2.5\n",
       "2014-08-05    1.5\n",
       "2014-08-06    0.5\n",
       "dtype: float64"
      ]
     },
     "execution_count": 74,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# shift forward one business day\n",
    "ts.shift(1, freq=\"B\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2014-08-01 05:00:00    1.0\n",
       "2014-08-02 05:00:00    2.0\n",
       "2014-08-03 05:00:00    2.5\n",
       "2014-08-04 05:00:00    1.5\n",
       "2014-08-05 05:00:00    0.5\n",
       "Freq: D, dtype: float64"
      ]
     },
     "execution_count": 75,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# shift forward five hours\n",
    "ts.tshift(5, freq=\"H\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2014-08-01 00:00:30    1.0\n",
       "2014-08-02 00:00:30    2.0\n",
       "2014-08-03 00:00:30    2.5\n",
       "2014-08-04 00:00:30    1.5\n",
       "2014-08-05 00:00:30    0.5\n",
       "Freq: D, dtype: float64"
      ]
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# shift using a DateOffset\n",
    "ts.shift(1, DateOffset(minutes=0.5))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2014-07-31 23:00:00    1.0\n",
       "2014-08-01 23:00:00    2.0\n",
       "2014-08-02 23:00:00    2.5\n",
       "2014-08-03 23:00:00    1.5\n",
       "2014-08-04 23:00:00    0.5\n",
       "Freq: D, dtype: float64"
      ]
     },
     "execution_count": 77,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# shift just the index values\n",
    "ts.tshift(-1, freq='H')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Frequency Conversion"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2014-08-01 00:00:00    0\n",
       "2014-08-01 02:00:00    1\n",
       "2014-08-01 04:00:00    2\n",
       "2014-08-01 06:00:00    3\n",
       "2014-08-01 08:00:00    4\n",
       "Freq: 2H, dtype: int64"
      ]
     },
     "execution_count": 78,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# create a Series of incremental values\n",
    "# index by hour through all of August 2014\n",
    "periods = 31 * 24\n",
    "hourly = Series(np.arange(0, periods),\n",
    "               pd.date_range('08-01-2014', freq=\"2H\", \n",
    "                             periods = periods))\n",
    "hourly[:5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2014-08-01     0\n",
       "2014-08-02    12\n",
       "2014-08-03    24\n",
       "2014-08-04    36\n",
       "2014-08-05    48\n",
       "Freq: D, dtype: int64"
      ]
     },
     "execution_count": 79,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# convert to daily frequency\n",
    "# many items will be dropped due to alignment\n",
    "daily = hourly.asfreq('D')\n",
    "daily[:5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2014-08-01 00:00:00      0.0\n",
       "2014-08-01 01:00:00      NaN\n",
       "2014-08-01 02:00:00      NaN\n",
       "2014-08-01 03:00:00      NaN\n",
       "2014-08-01 04:00:00      NaN\n",
       "                       ...  \n",
       "2014-09-30 20:00:00      NaN\n",
       "2014-09-30 21:00:00      NaN\n",
       "2014-09-30 22:00:00      NaN\n",
       "2014-09-30 23:00:00      NaN\n",
       "2014-10-01 00:00:00    732.0\n",
       "Freq: H, Length: 1465, dtype: float64"
      ]
     },
     "execution_count": 80,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# convert back to hourly.  Results in many NaNs\n",
    "# as the new index has many labels that do not\n",
    "# align from the source\n",
    "daily.asfreq('H')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2014-08-01 00:00:00      0\n",
       "2014-08-01 01:00:00      0\n",
       "2014-08-01 02:00:00      0\n",
       "2014-08-01 03:00:00      0\n",
       "2014-08-01 04:00:00      0\n",
       "                      ... \n",
       "2014-09-30 20:00:00    720\n",
       "2014-09-30 21:00:00    720\n",
       "2014-09-30 22:00:00    720\n",
       "2014-09-30 23:00:00    720\n",
       "2014-10-01 00:00:00    732\n",
       "Freq: H, Length: 1465, dtype: int64"
      ]
     },
     "execution_count": 81,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# forward fill values\n",
    "daily.asfreq('H', method='ffill')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2014-08-01 00:00:00      0\n",
       "2014-08-01 01:00:00     12\n",
       "2014-08-01 02:00:00     12\n",
       "2014-08-01 03:00:00     12\n",
       "2014-08-01 04:00:00     12\n",
       "                      ... \n",
       "2014-09-30 20:00:00    732\n",
       "2014-09-30 21:00:00    732\n",
       "2014-09-30 22:00:00    732\n",
       "2014-09-30 23:00:00    732\n",
       "2014-10-01 00:00:00    732\n",
       "Freq: H, Length: 1465, dtype: int64"
      ]
     },
     "execution_count": 82,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "daily.asfreq('H', method='bfill')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Up and down resampling"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2014-08-01 00:00:00      0.469112\n",
       "2014-08-01 00:00:01      0.186249\n",
       "2014-08-01 00:00:02     -1.322810\n",
       "2014-08-01 00:00:03     -2.458442\n",
       "2014-08-01 00:00:04     -1.246330\n",
       "                          ...    \n",
       "2014-08-05 23:59:55    456.529763\n",
       "2014-08-05 23:59:56    456.052131\n",
       "2014-08-05 23:59:57    455.202981\n",
       "2014-08-05 23:59:58    454.947362\n",
       "2014-08-05 23:59:59    456.191430\n",
       "Freq: S, Length: 432000, dtype: float64"
      ]
     },
     "execution_count": 83,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# calculate a random walk five days long at one second intervals\n",
    "# this many items will be needed\n",
    "count = 24 * 60 * 60 * 5\n",
    "# create a series of values\n",
    "np.random.seed(123456)\n",
    "values = np.random.randn(count)\n",
    "ws = pd.Series(values)\n",
    "# calculate the walk\n",
    "walk = ws.cumsum()\n",
    "# patch the index\n",
    "walk.index = pd.date_range('2014-08-01', periods=count, freq=\"S\")\n",
    "walk"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2014-08-01 00:00:00     -8.718220\n",
       "2014-08-01 00:01:00    -15.239213\n",
       "2014-08-01 00:02:00     -9.179315\n",
       "2014-08-01 00:03:00     -8.338307\n",
       "2014-08-01 00:04:00     -8.129554\n",
       "                          ...    \n",
       "2014-08-05 23:55:00    453.773467\n",
       "2014-08-05 23:56:00    450.857039\n",
       "2014-08-05 23:57:00    450.078149\n",
       "2014-08-05 23:58:00    444.637806\n",
       "2014-08-05 23:59:00    453.837417\n",
       "Freq: T, Length: 7200, dtype: float64"
      ]
     },
     "execution_count": 84,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# resample to minute intervals\n",
    "walk.resample(\"1Min\").mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-8.718220052832644"
      ]
     },
     "execution_count": 85,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# calculate the mean of the first minute of the walk\n",
    "walk['2014-08-01 00:00'].mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2014-07-31 23:59:00      0.469112\n",
       "2014-08-01 00:00:00     -8.907477\n",
       "2014-08-01 00:01:00    -15.280685\n",
       "2014-08-01 00:02:00     -9.083865\n",
       "2014-08-01 00:03:00     -8.285550\n",
       "                          ...    \n",
       "2014-08-05 23:55:00    453.726168\n",
       "2014-08-05 23:56:00    450.849039\n",
       "2014-08-05 23:57:00    450.039159\n",
       "2014-08-05 23:58:00    444.631719\n",
       "2014-08-05 23:59:00    453.955377\n",
       "Freq: T, Length: 7201, dtype: float64"
      ]
     },
     "execution_count": 86,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# use a right close\n",
    "walk.resample(\"1Min\", closed='right').mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2014-08-01 00:00:00      0.469112\n",
       "2014-08-01 00:01:00    -10.886314\n",
       "2014-08-01 00:02:00    -13.374656\n",
       "2014-08-01 00:03:00     -7.647693\n",
       "2014-08-01 00:04:00     -4.482292\n",
       "                          ...    \n",
       "2014-08-05 23:55:00    452.900335\n",
       "2014-08-05 23:56:00    450.062374\n",
       "2014-08-05 23:57:00    449.582419\n",
       "2014-08-05 23:58:00    447.243014\n",
       "2014-08-05 23:59:00    446.877810\n",
       "Freq: T, Length: 7200, dtype: float64"
      ]
     },
     "execution_count": 87,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# resample to 1 minute\n",
    "walk.resample(\"1Min\").first()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2014-08-01 00:00:00     -8.718220\n",
       "2014-08-01 00:00:01           NaN\n",
       "2014-08-01 00:00:02           NaN\n",
       "2014-08-01 00:00:03           NaN\n",
       "2014-08-01 00:00:04           NaN\n",
       "                          ...    \n",
       "2014-08-05 23:58:56           NaN\n",
       "2014-08-05 23:58:57           NaN\n",
       "2014-08-05 23:58:58           NaN\n",
       "2014-08-05 23:58:59           NaN\n",
       "2014-08-05 23:59:00    453.837417\n",
       "Freq: S, Length: 431941, dtype: float64"
      ]
     },
     "execution_count": 88,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# resample to 1 minute intervales, then back to 1 sec\n",
    "bymin = walk.resample(\"1Min\").mean()\n",
    "bymin.resample('S').mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2014-08-01 00:00:00     -8.718220\n",
       "2014-08-01 00:00:01    -15.239213\n",
       "2014-08-01 00:00:02    -15.239213\n",
       "2014-08-01 00:00:03    -15.239213\n",
       "2014-08-01 00:00:04    -15.239213\n",
       "                          ...    \n",
       "2014-08-05 23:58:56    453.837417\n",
       "2014-08-05 23:58:57    453.837417\n",
       "2014-08-05 23:58:58    453.837417\n",
       "2014-08-05 23:58:59    453.837417\n",
       "2014-08-05 23:59:00    453.837417\n",
       "Freq: S, Length: 431941, dtype: float64"
      ]
     },
     "execution_count": 89,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# resample to 1 second intervales using forward fill\n",
    "bymin.resample(\"S\").bfill()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2014-08-01 00:00:00     -8.718220\n",
       "2014-08-01 00:00:01     -8.826903\n",
       "2014-08-01 00:00:02     -8.935586\n",
       "2014-08-01 00:00:03     -9.044270\n",
       "2014-08-01 00:00:04     -9.152953\n",
       "                          ...    \n",
       "2014-08-05 23:58:56    453.224110\n",
       "2014-08-05 23:58:57    453.377437\n",
       "2014-08-05 23:58:58    453.530764\n",
       "2014-08-05 23:58:59    453.684090\n",
       "2014-08-05 23:59:00    453.837417\n",
       "Freq: S, Length: 431941, dtype: float64"
      ]
     },
     "execution_count": 90,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# demonstate interoplating the NaN values\n",
    "interpolated = bymin.resample(\"S\").interpolate()\n",
    "interpolated"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "                           open        high         low  \\\n",
       "2014-08-01 00:00:00    0.469112    0.469112  -67.873166   \n",
       "2014-08-01 01:00:00   -3.374321   23.793007  -56.585154   \n",
       "2014-08-01 02:00:00  -54.276885    5.232441  -87.809456   \n",
       "2014-08-01 03:00:00    0.260576   17.124638  -65.820652   \n",
       "2014-08-01 04:00:00  -38.436581    3.537231 -109.805294   \n",
       "...                         ...         ...         ...   \n",
       "2014-08-05 19:00:00  437.652077  550.408942  430.549178   \n",
       "2014-08-05 20:00:00  496.539759  510.371745  456.365565   \n",
       "2014-08-05 21:00:00  476.025498  506.952877  425.472410   \n",
       "2014-08-05 22:00:00  497.941355  506.599652  411.119919   \n",
       "2014-08-05 23:00:00  443.017962  489.083657  426.062444   \n",
       "\n",
       "                          close  \n",
       "2014-08-01 00:00:00   -2.922520  \n",
       "2014-08-01 01:00:00  -55.101543  \n",
       "2014-08-01 02:00:00    1.913276  \n",
       "2014-08-01 03:00:00  -38.530620  \n",
       "2014-08-01 04:00:00  -61.014553  \n",
       "...                         ...  \n",
       "2014-08-05 19:00:00  494.471788  \n",
       "2014-08-05 20:00:00  476.505765  \n",
       "2014-08-05 21:00:00  498.547578  \n",
       "2014-08-05 22:00:00  443.925832  \n",
       "2014-08-05 23:00:00  456.191430  \n",
       "\n",
       "[120 rows x 4 columns]"
      ]
     },
     "execution_count": 91,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# show ohlc resampling\n",
    "ohlc = walk.resample(\"H\").ohlc()\n",
    "ohlc"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Time series moving window operations"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAAEHCAYAAACtAv3IAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XdYVMf6wPHv0IuADUVFVFTA3rDH3muixppiqiYxPbn3\nmnZv8ks3vZhiejRqTNTYoom9NywoFuwFsWBBpQgC8/tjMKIu7AK71PfzPPssnDNzzhzQl7NzZt5R\nWmuEEEKUfE6F3QAhhBAFQwK+EEKUEhLwhRCilJCAL4QQpYQEfCGEKCUk4AshRCkhAV8IIUoJCfhC\nCFFKSMAXQohSwqWwG5BVxYoVdc2aNQu7GUIIUaxs2bLlrNba31q5IhXwa9asSURERGE3QwghihWl\n1FFbykmXjhBClBIS8IUQopSQgC+EEKWEBHwhhCglJOALIUQpIQFfCCFKiaIV8NNSCrsFQghRYhWt\ngB+3B5a8BqlJhd0SIYQocYpWwPcsB2s+hImtYe8CkPV2hRDCbopWwC9bA+5fCO5lYPoomDoczh8u\n7FYJIUSJ4PCAr5TqrZSKVkodUEqNt1qhRjsYuwp6vgFH18IXbWDbFEc3UwghSjyHBnyllDMwEegD\n1AdGKqXqW63o7ArtnoDHN0NAI1j6f5CR4cimCiFEiefoO/xWwAGt9SGtdSowHbjd5tq+VaHVWEg4\nDSe2OKqNQghRKjg64FcDjmf5PiZz2z+UUmOUUhFKqYi4uLhbj1C3Bzi5wN75Dm2oEEKUdIX+0FZr\nPUlrHa61Dvf3t5DO2bMs1GgP0X8WfOOEEKIEcXTAPwFUz/J9YOa23AnrB2f3wdkD9mqXEEKUOo4O\n+JuBukqpWkopN2AEMDfXRwntY96jF9izbUIIUao4NOBrrdOAx4G/gD3ADK31rlwfqGyQGa2zV7p1\nhBAirxzeh6+1/lNrHaK1rq21fjPPBwrtB8c3QoKFB7tCCCGsKvSHtjYL6wdo2LeosFsihBDFUvEJ\n+AGNwC9IRusIIUQeFZ+Ar5R5eHtwuWTTFEKIPCg+AR8grC+kJcOh5bmqpiXrphBCFLOAX6M9ePjl\nerTO2wv38tLsnaSmST4eIUTpVbwCvrMr1O0J+xZCRrpNVbTWKAW/bDzG3d9u5GyCrKolhCidilfA\nBwjtC0nnzBBNGyileKFPPT4Z0ZTImHgGfraGqBMXHdxIIYQoeopfwK/THZxczYpYuXB702rMfLQd\nAEO+XMec7bnP8CCEEMVZ8Qv4Hr5Qq6MZnmnrw9jkeLh8iobV/Jj7xG00CSzLU9O38/afe0jPkAe6\nQojSofgFfDCjdc4fgrho28pPGwkfhMFPA6l4cDZT7m3I3W2C+HrVIYZ8uY69py6ZcvHHzOpaqz+A\n9DTHtV8IIQqBS2E3IE9C+8KC5yFqJnR9KeeycdFwbB3U7grnDsLssbi5leGN+rfTt2sXFqzfwI6J\n7xHgFU3ZlNjr9crVhIZDHHoZQghRkIpnwPetahZG2fozdPq3Gb2Tna0/mwVUBk0CrwpwbD1EToVd\nc2iX+gvtgCTXMqxOCmOfZz869RpE47VPwLrPocFgM+FLCCFKgOLZpQMQ/iAknMo51UL6VYicDiG9\noYw/ODlBzfZw+0R4fh+MmAZjVuL18jE875nODJe+DPwtntnut0PsVptHAgkhRHFQfAN+3R4mt87m\n77Ivs28RJJ2F5vfeus/NyzwLqNoUnJzpGOLPX093ZEzHYP57tBHx2putv77BpsPnZaauEKJEKL4B\n38kZWoyGwyvh7H7LZbZNgTIBULubTYf0cnPhxb71WPyfvuwJHErTxDU8P+kPBny+hllbY0hJs22y\nlxBCFEXFN+CDuXN3coWI72/dd+kk7P8bmo4C59w9qgjw86Dt8PEoJxe+CdnMlasZPDsjkpZvLOHZ\nGdv5e9cprlyV4C+EKF4c9tBWKfUeMABIBQ4C92ut4+16kjKVoN4A2P4LdH3FdNNcEzkNdAY0uztv\nx/atgmo0lNDdc1j8zFusjknjj+0nWLL7NLO2nsDLzZnOof70bliFvg0DcHEu3n87hRAlnyOj1GKg\noda6MbAPeMEhZ2n5IFy5CLtmXd+mtenOqdEeKtTO+7HbPgZXE1Fbf6JjiD8fDmvKlld6MPnBVgxq\nVo1Nhy/w5LRtvLFgT/6vQwghHMxhAV9r/XfmmrYAG4BAh5yoRnvwD7vx4e2x9XD+YN7v7q8JaAS1\nOsHGryEtFQBXZyc61PXnzUGN2PhiN0a2CmLyhqPsO305f+cSQggHK6h+iAeAhZZ2KKXGKKUilFIR\ncXF5WK9WKTNEM3YrxG4z27ZOBjcfqH97Ppqcqd0TcDkWdv9xyy5nJ8W/eoXi7ebM6/N3y2geIUSR\nlq+Ar5RaopSKsvC6PUuZl4A04BdLx9BaT9Jah2utw/39/fPWkCbDwdXL3OVfuWSCc8PB4Oadt+Nl\nVbsbVAyF9Z9bzN1T3tuNp7uHsHr/WZbtPZP/8wkhhIPkK+BrrbtrrRtaeM0BUErdB/QH7tKOvP31\n8INGQ2Hn77DlR7iaZHnsfV44OZm+/JORcGSNxSL3tK1BsL83byzYI4usCCGKLId16SilegP/BgZq\nrR2/CG3LB83yh0tfM3361VrY79iNh4NXRVj3qcXdrs5OvNKvPofPJvLz+iP2O68QQtiRI/vwPwd8\ngMVKqe1Kqa8ceC6o0gSqhUNGGjS7x745cFw9zV3+/r/h6HqLRbqEVaJTiD+fLN3POVlVSwhRBDly\nlE4drXV1rXXTzNcjjjrXP257GnyqmDtye2v9qDn24v9mm4f/lf71SEpN54PF++x/fiGEyKeSNVuo\n3gB4bq9JlGZvbl7Q+QWI2ZTtalt1KvlwT5saTN90jD0nL9m/DUIIkQ8lK+A7WtO7oGKIeU6QzQIp\nT3evi6+nK/83T4ZpCiGKFgn4ueHsAt1fhbP7YNtki0XKernxTPcQ1h86J8M0hRBFigT83ArtC9Vb\nw4p3IDXRYpFRrYOoUcGL9/6KJkPWzBVCFBES8HNLKejxf2bxlQ1fWCzi6uzEcz1D2XvqMnMjYy2W\nEUKIgiYBPy+C2kBoP1jzCSSes1ikf6Mq1K/iyweLo2UylhCiSJCAn1fd/gtXE2HVexZ3Ozkp/t07\nlOPnk5m26VgBN04IIW4lAT+vKoWZbJybv4ULRywW6RTiT+ta5fls2X4SUyyP6hFCiIIiAT8/Or9g\nFlnZannEjlKK//QJ42xCKt+vOVzAjRNCiBtJwM8P36oQ0NBMxspG86By9KxfmUmrDnE+MbUAGyeE\nEDeSgJ9fga3gxFbIyH6N2+d7hZKYmsaXKw4UYMOEEOJGEvDzq3orSE2AM9kvcxhS2YfBzQP5af1R\nYuOTC7BxQghxnQT8/AoMN+85dOuASbmAho8ksZoQopBIwM+vcrVMrvzjm3MsFljOi/vb1+S3LTGs\n2X+2gBonhBDXScDPL6VMt46VO3yAZ3qEEOzvzb9/j+TSlasF0DghhLjO4QFfKfWcUkorpSo6+lyF\nJjAczh2ApPM5FvNwdeaDoU04dekKr8/bXUCNE0IIw6EBXylVHegJlOyppoGtzHtMhNWizYLK8Wjn\n2vy2JYale047uGFCCHGdo+/wP8Ksa1uyU0ZWaw7K2aZuHYAnu9UlLMCH8bN2ciG7sfmJ52DDl3D1\nih0bKoQozRy5iPntwAmtdaSVcmOUUhFKqYi4uDhHNcex3LyhcgOIyfnB7TXuLs58OKwp8Ump/Hfu\nrlsLaA3znoRF42HlO3ZurBCitMpXwFdKLVFKRVl43Q68CPzX2jG01pO01uFa63B/fwcsTVhQAltC\nzJYcJ2BlVb+qL091q8u8yFgW7Dh5487dc2DvfCgbBGs/NRO7hBAin/IV8LXW3bXWDW9+AYeAWkCk\nUuoIEAhsVUoF5L/JRVT1VpB6GeL22lzlkU61aRLox8t/7OTM5cyum6Tz8OfzUKUJPLwCylSCOeMg\nLcUx7RZClBoO6dLRWu/UWlfSWtfUWtcEYoDmWutTjjhfkRDY0rzb2K0D4OLsxAfDmpCUms6gievY\ndPg8/P2yCfoDPwfvCjDgEzizG1a976CGCyFKCxmHby/lg8GrgtUJWDerU8mHGWPb4uqs+PybSbD9\nF9LbPQlVGpsCIb2g8QhY8yGc3OGAhgshSosCCfiZd/ole3qpUpn9+LaN1MmqSfWyzH+kGR97/8DB\njCqMiO7E0XNZ1svt/TZ4loc5j0G6TNgSQuSN3OHbU2BLOLvP6gQsS8qsfZfyV09xuvME9p5Npe8n\nq5m5JQatNXiVh/4fwqmdsOZjBzRcCFEaSMC3p+qZE7ByO6rm+GYz5j78Qdp1HcjCpzrQoKofz/0W\nycM/b+HUxStQbwA0GAwr34XTMktXCJF7EvDtqWpzUE6569bJSDdj7n2rQvdXAZNobdqYNrzUtx5r\nDsTR48OVTNt0DN1nAnj4wfynzVh9IYTIBQn49uReBio1gOO5CPj7FplROD3+Dzx8/9ns7KR4uGMw\ni57qSINqvrwwayejph7kXKvn4PhGOLbeARcghCjJJODbW/WWcGILZGTYVn7Dl+AbCPXvsLi7ZkVv\npj3chrcHNyLqxEW6La1Kkosfp//6gBPxyaaP34K09AyOnUsi6sTFbMsIIUoXl8JuQIkT2Aoivoez\n0VCpXs5lT0XBkdXQ/TVwzv5XoZRiZKsguoRW4n9zo/guugvjTsyh67u/EO8ZRIOqvtQL8OVKWjpH\nzyVx7HwSJy4kk5ZhAn39Kr480yOE7vUqoZSy59UKIYoRCfj2dm0C1vFN1gP+xi/B1Qua32vToQP8\nPPj6nnCSz78Nn//J13U38WPZVuyKvcTP64/i6eZMjQpeNKrmR//GVahR3pu0DM3Xqw7y8M8RNKrm\nx9Pd69I1LBeB/+ByiJppupy8yttWRwhRJEnAt7cKtc2Y+ZhN0GJ09uUSz8KO36DZXbkOpJ7lq0Lj\nYYRGzeTtEe+AV3kyMjROTpaD+LDwQGZtO8Fny/bz4E8RNAn049meoXQKySF3Ufwx+OtF2DPPfF+u\nBnT8V67aKYQoWqQP397+mYBlJTd+xA+QngKtH8nbedqOg7RkiPgOINtgDyaFw7Dw6ix7rjPvDmnE\nucRURn+/ift+2MSBMwk3Fr6aDCvehc9bwv4l0PVlqNURNn8nk76EKOYk4DtC9ZYmiVr8ccv701Jh\n87dQuxv4h+btHJXrm/qbvrE5sZqrsxPDWwax7LnOvNyvHluOXqDXx6t4de4u4pNSYd/fMLE1rHgL\nQnrD45vNXX2bcXD5JOyZm7e2CiGKBAn4jlB/ELj5wJQhZiGTm+3+AxJOQZtH83eedo9DwmnY+Vuu\nqrm5OPFQh2BWPN+ZES2r8/P6I7ww4WMypg4n3cUD7p0Lw36CstVNhbo9zWLtG7/OX3uFEIVKFaUh\ne+Hh4ToiwvoygcXCkbUwZTD4h8HouWbCFJgJU990gZQEGLcJnPLxN1dr+Oo20Bnw6DrTnZTViS2w\naza0fxq8s19S+NDebVT+tR/H0iswJPVVyvj4EezvTa2KZajt702tit40j51GudX/gzEroGqzvLdZ\nCGF3SqktWutwa+Xkoa2j1GwPwybD9JEwdTjcPQvcvMzondht0Pf9/AV7MAG+7Tj441E4uAzqdDPb\nE87A0tdg2y+AhuiF5vzlatx6jOQLBC9+CO3pSVLPKTwe782huEQOn01kUdRJLiSZfnsfqrHR3Z31\nP73Owjr/I7SyD62Dy9M4sGz+rkEIUWDkDt/RombBzAehdlcYMQ1mjzHB+ZndZmZufqWlwseNTJ/+\nyF9h0ySTb+dqMrR5BGp1hpkPmOGfd880SzFek54GU4fC4dUweh7UaHvL4S8kpnLobAL7TidQe/Or\nNIubS1/nr9mf6AFAv8ZVeKFPGIHlvPJ/LUKIPLH1Dl8CfkHY+jPMfQLqdDfj2ts+Bj3fsN/xV70P\ny143/ewXDps+915vQ8U6Zv/pXeZ5wtUkGDUDgtqY7YtehA0TYcCnOQ8hvSZuH0xsCV1e5lyLJ5m8\n4ShfrTyI1jC2YzCPdK6Nl5t8aBSioBWJgK+UegIYB6QDC7TW/86pfIkN+ADrJ5px7coJnoo069Xa\nS9J5+LQpeFU0ufNDet1a5sJR80zhYgwM/QkS42Du42ZYaJ93bT/X5EFwZg88vROcXYmNT+adhXuZ\nGxlLgK8H4/uEcXvTqjKjV4gCVOgBXynVBXgJ6Ke1TlFKVdJan8mpTokO+GCGUF5NgvZP2f/YSefB\n3QecXbMvk3gWfrnTrJylnMxzhrtm5pjW4Rb7/oKpw+DO76HhkH82Rxw5z2vzdrPzxEWql/dkQOOq\nDGxaldDKPhL8hXCwohDwZwCTtNZLbK1T4gN+UZByGX5/wMwRuP/P3KdLyMiAz5qbxdUf/PumXZp5\nO2L5fUsM6w6eIz1DU7dSGQY0qcrAJlWpWdHbjhcihLimKAT87cAcoDdwBXhea33Lgq9KqTHAGICg\noKAWR48edUh7xE0yMvI+SmjDl7BofI5DNM8mpLAw6hTzImPZdPg8SsGnI5oxoEnVPDdZCGFZgQR8\npdQSIMDCrpeAN4HlwJNAS+BXIFjncEK5wy8mrlyED+ubVbgGfWW1+MmLyTw5bRs7T1zk90fa0bCa\nXwE0UojSw9aAn6+B4Frr7lrrhhZec4AYYJY2NgEZQPazf0Tx4eFnMnzu+BWObbRavIqfJ1/e3YLy\nXm48/HMEcZdtSwUhhLAvR6ZW+APoAqCUCgHcgLMOPJ8oSJ1fAL9AM68gJcFq8Ypl3PlmdDgXklJ5\nZMoWUtLSC6CRQoisHBnwvweClVJRwHRgdE7dOaKY8fCFQV+b4Z5/v2RTlQZV/fhgaFO2HL3Af//Y\nJStxCVHAHDZLRmudCtztqOOLIqBGO2j3BKz7FEL7Wh7/f5N+jauw91QdPlt2gHpVfLivfa0CaKgQ\nAiRbpsivri+bhdvnPG7G+dvgme4h9KhfmdcX7GHtAenlE6KgSMAX+ePiDoMnwZV4mP+0yeBphZOT\n4qPhTant782jU7aw7/TlAmioEEICvsi/gIbQ5SWzHGLk9Ovb09NMiuZ1n8G8pyE5/p9dZdxd+G50\nS9xdnRn9/SZOXkzO27n/eikzRbQ8DxDCGsl0Jeyj3RMm7cLCf8PF43BsAxzfCKlZRvAENISWD/3z\nbfXyXvx4f0uGf72B+77fzIxH2uLnmUNqiJtt+RHWf26+PrPHZAwVQmRL7vCFfTg5w6AvzZ328jfN\nkohNRpicO89FQ/nasHfBLdUaVPVj0j0tOHQ2gYd/juDKVRuHax7bCAueh8BW5vuDy+x4MUKUTBLw\nhf2Uq2nWwf3XIXhsPfT7wCRY8wmAev3h8KobunWuaVenIh8Ma8qmw+d55tftpGdY6Z65FAsz7jFL\nMN41AyqGSMAXwgYS8IV9+VYB7wq3bg8bABlpsP/vW/cBA5tU5eV+9VgYdYrX5uUwRv/qFZh+F6Qm\nwoip4FnOLC5zdJ3ZJ4TIlgR8UTCqtYAyAebBbjYe6hDMmI7B/Lz+KM/9FsmRs4k3FtAa5j8DsVvN\npK9K9cz24C6QlgzHNzjwAoQo/iTgi4Lh5ARhfeHAUrP8YjbG9w5jbKdg5u84SdcPVvDktG3sOXnJ\n7Nz4FUROhU7jTRfRNTVvAydXs5qYECJbssShKDgHlppVt0ZOh9A+ORY9c/kK3605zJT1R0lMTeel\nwB08dO49LgV1Z9dtn3MpJZ1LyWlcunIVfx93Bm57GJVyGR5ZXUAXI0TRYWu2TBmWKQpOzQ7g7gd7\n5lsN+JV8PHihTz0e61ib3TNeoe3Rr1ifXp+HooeRGH3LsgqkBdRlSPyPkBAHZfwddAFCFG8S8EXB\ncXGDkJ4Q/aeZlGVtacX0q/gtfoa2R6eQ1nAYF+u+zMeuHvh4uODr4frP+5zIE0xdcJghLrB3/TzC\nejxQMNcjRDEjAV8UrLD+sPM384C15m3Zl7tyEWbcC4dWQKfxuHQeT+9s1sa9t21NWgbdxaVv3mbn\nytnMvtqW53qG4uYij6iEyEr+R4iCVac7OLubbp3sxB+H73rBkTVwx5fQ5QWwshB6vWrl8ArrRi+P\n3Xy96iB3frWOA2ckR48QWUnAFwXLvQzU7gJ751vOf3MxBr7vZSZX3T0Tmo6y+dAudbvhm3aWyQPL\ncux8Er0+Xs0Ls3Zw6qKMzxcCJOCLwhDW3+TbORl54/bkeJhyJ6RchvvmQ3Dn3B23dhcAOqgdLH22\nE/e2rcHvW2Lo9N5y3lm4l4tJV+3SfCGKK4cFfKVUU6XUBqXUdqVUhFKqlaPOJYqZ0D6gnG7MrZOW\nYmbQnjsAw6dAlca5P27ZIKhQBw4tp0IZd/43oAHLnutM30ZV+HrVQTpMWMZXKw9yNT3DftciRDHi\nyDv8CcBrWuumwH8zvxcCvCtCUFvTrQOQkQGzx8LRNTDoKwjulPdjB3cxff9pZqH06uW9+Gh4U/58\nsgMtapTjnYV7GfNzBMmpsqauKH0cGfA14Jv5tR8Q68BzieImrD+c2Q3nDsLiV2DXbOjxf9Dozvwd\nt3ZXuJpkUjNnUa+KLz/c34q3BjVi5b447v5uo3TxiFLHkQH/aeA9pdRx4H3gBUuFlFJjMrt8IuLi\n4hzYHFGkhPUz7zMfNDntWz8C7Z7M/3Fr3gZOLtmmWRjVOoiJo5qzM+Yiw75ez+lL8kBXlB75CvhK\nqSVKqSgLr9uBR4FntNbVgWeA7ywdQ2s9SWsdrrUO9/eXGZKlRrkaENAYYrdBvYHQ6y2rQy9t4uEL\ngS1zTJfcp1EVfri/JTEXkrjzq3W3JmkTooTKV8DXWnfXWje08JoDjAZmZRb9DZCHtuJGHf8FTe+C\nwd+YBVTspXZXMwIo8Vy2RdrXqci0MW1ITEnnzq/Wsyv2ov3OL0QR5cgunVjg2tO3rsB+B55LFEf1\nB8IdX4Crh32PG9wF0HB4RY7FGgeWZcbYtrg5K+76diNxl1Ps2w4hihhHBvyHgQ+UUpHAW8AYB55L\niOuqNgMPP4tLKt6sTqUy/Pxga5JS0nl9/u4CaJwQhcdhAV9rvUZr3UJr3URr3VprvcVR5xLiBs4u\n0GQU7J4DF09YLV6nUhke61KbuZGxrIg+UwANFKJwyExbUTK1eQR0Bmz62qbij3auTW1/b16ZEyVj\n9EWJJQFflEzlaprRPxE/mlQNVri7OPPWoEYcP5/Mx0v3Obx5QhQGCfii5Gr3BKRchG1TbCreOrgC\nw8Or8+3qw+yOveTgxglR8CTgi5IrMByqt4ENX5gFV2zwQt8wynm58sKsHaRnFPDyn+cOwuZvC/ac\nolSRgC9KtrbjIP4Y7J1nU/GyXm680r8+kTEXmbz+iEObdovVH8KC5+CsjGAWjiEBX5RsYf2gXC1Y\nP9HmKgObVKVD3Yq891c0Jy8mO7BxWWgNB5aYr/fY9sdJiNySgC9KNidnaPMYxGyGYxutlweUUrx5\nRyPStea9v6Id3MBMp6Mg4ZRJGy0BXziIBHxR8jW7CzzKwvrPbK4SVMGL4eHVmR95krMJBTADd/9i\n897yYYjdatP8ASFySwK+KPncvCH8AbOO7vlDNle7u00NUtMzmBFx3IGNy3RgKVRuBC0fMt/bMEtY\niNySgC9Kh1ZjTNrkDV/aXKVuZR/aBlfglw3HHDti58olOL4B6nYH/xCoGGLzQ2YhckMCvigdfKtA\no6FmTH6C7ekT7mlbgxPxyY5NuXBoBWSkQZ0e5vuw/nBkLSSdd9w5RakkAV+UHu2fNIH1225wcodN\nVXrUr0wlH3cmbzjquHYdWALuvlA9M4N4vQGg0yF6oePOKUolCfii9KhUD+5faCZhfdcTdvxmtYqr\nsxMjWwWxcl8cR885YKGUa8MxgzuBs6vZVrUZ+AZeX/NXCDuRgC9Kl8BwGLvSBNVZD8GiF63Owh3Z\nKggnpZi68Zj923NmD1w6AXW6X9+mlJk/cHAZpMpqXMJ+JOCL0qdMJRg9F1qNhQ0TYfIdkJD9esoB\nfh70rF+ZXyOOc+WqnTNpXptsda3//pp6/SHtyvX9QthBfte0HaqU2qWUylBKhd+07wWl1AGlVLRS\nqlf+mimEnTm7Qt8JcMdXZlLW970g/Wq2xe9pU4P4pKss2HHSvu04sBgq1Qe/ajduD2oHnuVlEpaw\nq/ze4UcBg4FVWTcqpeoDI4AGQG/gC6WUHRctFcJOmo6EQV/D+YOwb1G2xdrWrkCwv7d9H96mJMDR\n9VCn2637nF0gtC/s+xvSUi3X1wWc3E3c6PxhOLWzsFuRK/ldxHyP1trS3PPbgela6xSt9WHgALKI\nuSiqwvqDT1WI+CHbIkop7mlTg+3H49kZY6cFzw+vgoyrt3bnXFOvv0nvfGTVjdu1JnHdd6S8Ecji\n6Z8ya2sM6w6e5fDZRFm8pSDNHgs/3w5pDp6JHX/c/Nucfhd83spkVc0jFzs2K6tqwIYs38dkbruF\nUmoMmevdBgUFOag5QuTA2QWa3wsr34ULR8ziKRYMaRHIhEXRTNlwlHfvbJz/8x5YDK7eENTW8v7g\nLmb/nvn/PNTVqYkcn/woQcfnkKjdabPnLfpE+hKj/f+pVrOCF5+MaEaT6mXz30Zh2YWjcDwzN9Pe\n+dBwiH2PH7sNdv5unuHE7TXbfAMh+Tz8/QqMnJqnw1q9w1dKLVFKRVl43Z6nM95Eaz1Jax2utQ73\n9/e3XkEIR2h+rxkds+WnbIv4erhyR7NqzIk8wcWk7Pv7bZJ1OKaLm+Uyrh5Qt4dJs5CRzunDUZx4\nrx2Bx+Yy3WsUp+9aRhl3ZxbXmsbUB8P5cFgT/tUrlKvpmmFfr2fOdsnH4zBRM827tz9s+dG+xz57\nAL7tAZsmgU8A9HwTHtsIz0RBx+cheoH5dJgHVgO+1rq71rqhhdecHKqdAKpn+T4wc5sQRZNfNajb\nC7ZNzr7PHLi3bQ1S0jL4v/m70fnpQz+73+Tpzzoc05J6AyDxDDsnP4/3j93xTj3H4uYTGfr8FwSH\nNET1mYBn7AbanfmVwc0DGdelDnMfb0+TwLI8NX07ExbtJaOgF3IpDaJmQmAraP2ICb756Ga5xd8v\ngYsHPL0vuHZJAAAgAElEQVQT7p0D7R6HSmHmhqTNY+BXHf56ETJy333nqGGZc4ERSil3pVQtoC6w\nyUHnEsI+wu+HxDhzB5WNelV8eaJrXWZujeG3iJi8n+tAZnZMKwH/QrXOpOFCo8Pfc8q9JskPLKfX\n7Xfh7KRMgaajzDOIZa/D6V0AVCjjzpSHWjOyVXW+WHGQMZO3kJBi24pfwgZn9pp01o3uhGZ3g3KG\nrdl/MsyVA0vN4IFO/zJ39zdz9YTur5qHxZHTcn34/A7LHKSUigHaAguUUn8BaK13ATOA3cAiYJzW\nWp4miaKtTndz95TDw1uAp7rVpX2dCrwyJ8r62rezxsKkzrDoBdg9By6fNtsPLDFJ0srVyLbqwbgE\n7vhuJ5+lD2Z3nYep/e+VVK1R98ZCSsGAT8DDz5wr8wGim4sTbw1qxKsD6rM8+gxDvljH8fNJ1n4C\nwhZRv5t1CxoMMkE5tA9s+yXHT4Y2SU8zd+7laplPDtlpOAQCW8LS181Ir1zI7yid2VrrQK21u9a6\nsta6V5Z9b2qta2utQ7XWkhREFH1OzqYv//DKHD+iOzspPh7eDD9PV8ZN3crlK9n058duhx3TTTbM\niO9hxr3wQQh82gwOr85+dA6w7uBZBk1cS8KVNDo+NIH6d7+PcnG3XNi7Igz8DE7vhBVv/7NZKcV9\n7Wvx0/2tOHXpCmMnb5HunfzS2jxMrdXRTOADaHE/JJ3N8ZOhTbb8YB7Q9nwDsvtdg/kj3+sts2DO\nuk9zdQqZaStEVs3uMR/RrTyI8/dx5/NRzTl2PonxM3da7s/f+JUZZfPwMhh/HB5cAj1eB/96ULY6\nNB5q8dgzIo5z73ebqOzrwR/j2tOiRjnr7Q7tY9q+9hM4tuGGXbfVrcirA+uz++QlFu06Zf1YInux\nW+HCYWh45/VttbuAX1D+Ht4mnYflb5o/JGH9rJev3goaDIa1n+ZqsRxHDcsUonjyrWKC5/ZfoOvL\nOd5ptapVnn/1CuWdhXtpua4c97WvdX1nwhnzYK/5aPDMHB5ZvaV5tX/S4vEyMjTv/x3NFysO0qFu\nRSbe1RxfD1fb2977bfMAcfYj8HiEGW6aaWCTakxcfpCPFu+jV4OA688ARO7snAnObuZh+jXXPhku\nf8MssFM+OPfHXfkuXLkIvd5GA5sOneNcYiouTgoXZ4WzkxMuTooMrYmNT+b4+WQSkofyYto8Fn/8\nqM2nkYAvxM3C7zdjq/fMMw/mcjCmQzCbD5/nzT/30DSoHE2vjX2P+B7SU6H1WJtOmZKWzvO/7WBe\nZCyjWgfx2sAGuDrn8gO4uw90fcUkhTsZCYEt/tnl7KR4pnsI46ZuZV5kLHc0szgtRuQkIx12zTJd\ncZ43zXFodpfpTtv6s3momhtx0bDpG3Tz0ayIr8THv68l0srkPmcnRdWyHjQrM5jbE361+VQS8IW4\nWXBXKFvDfES3EvCdnBQfDGtCv0/X8OCPmxndribDm1Wi8ubvTGCoWDfH+gAJKWk8MnkLaw6cZXyf\nMMZ2DEapPN6B1+5i3g+vuCHgA/RpGEC9Kr58vGQf/RtXwSW3f1BKu6Nr4fJJaGRhkpVvVQjpbRbY\n6fxi9nMrLNB/vUS6iycPHOnBqrWbCSznyTuDG9EsqBxpGRmkpWvSMjRp6RkAVC3rSRU/D/P7uxIO\nny4FrAweyCS/cSFu5uQELUbDkdVmvLwVZb3c+P6+ltSv6suHi/cx4cN3IPEMUdVHWX1IGnc5hRGT\n1rP+0Dk+GNqERzrVznuwB/MAt3JDOLTyll1OTopne4Rw5FwSs7bKtJhc2/m7eSYT0sfy/hb3mWG9\n+2wfo7JvzUzUgcW8k3Q7h5I8eXdII5Y/35kRrYIIDfChQVU/mlQvS4sa5WgdXIHWwRWoXt7r+h9r\nD99cfaKQgC+EJU3vNmvg2vggLjTAh8kPtmbFc5143ncZh6hG/4VudPtwJZ8u3U/UiYu3PNg9di6J\nO79ax4EzCXx7bzhDWgTap+21OpkHt1eTb9nVvV4lmgT68cnS/aSkyUhpm6WlmmG1YX3BzctymTrd\nTPoDG/7NZGRo5s36hSqLx3FUVSNkwHMse64zw1sG5b4rr/k9NheVgC+EJT6Vzczbnb/nakZjzeRd\nVEnaS/Xez/DR8KZULOPGR0v20f+zNbR9exkvzNrJkt2n2XL0PIO/XMfF5KtMfbgNXcIq2a/twZ0h\nPeV6rpcslFI81zOUE/HJzNh83H7nLOkOLoMr8TeOzrnZtYe3B5eZnEzZuJh0lR+/eJPekU9w0b0K\nFcctYlib2ri5OD4cSx++ENlpNMSMrT66Dmp1sK3Oxi/Bww/X5qMY5ObNoGaBxF1OYUX0GZbtPcPc\n7SeYtsmsnFXVz4PpY9pSp5KPfdtdo535dHJopQn+N+lQtyIta5bj8+UHGBpeHQ9XyVxuVdTv4FEW\nanfNuVyzu82Im58Gwm3PmJnQWUZ67Twez4afxvNw2jRiK7Sm2sMzUDc/AHYgucMXIjshvcHVy/xn\nt8XFGNg919zluXn/s9nfx52h4dX58u4WbPtvT6Y82JoX+oQx67H29g/2AO5loFq4mUBmwbW7/NOX\nUpjiyMXZS4rUJNj7J9S/3frDWL9qcPdM8KoA8582k+w2fo1OTWLq+gPs+eZ+Hk6bxrk6g6n62PwC\nDfYgAV+I7Ll5m0VIds+xbdr85m8BDa3GZH9IFyduq1uRsZ1qE+DnYb+23iy4k0mxmxxvcXeb4Aq0\nr1OBL1ccJFHy7ORs3yK4mmh1xNY/ancxk+3umW1Gey38N1c+aEjowhEMc1pGcttnqXDX97kayWMv\nEvCFyEmjOyH5AhxannO51CTzsC6sH5QtAus61OoEOsMMJczGsz1COZeYyg9rDxdgw4qh3XNMGuQa\n7W2vo5Tp/nlgIQkj5xKZUo0mTofI6Pcxnr3+Z/YXAgn4QuSkdjfTd3st/3l2dkw3fxha2z7r0aEC\nW5ruKAvDM69pUaMc3etV5uuVh7iQmM/EXyVVahLsX2xm1jrl7VnH+9EVGZUynn0P7MGp5f12bmDu\nSMAXIicublB/oFmEJDWbbJOpibByggmyNdoVbPuy4+Jm2nJoRY7F/t07lMTUNL5YcaBg2lXcHFxq\nunPqDcxT9T0nL/Hz+iOMah1E/aDK9m1bHkjAF8KahndCagLs/8vy/vUTzQzMnm8U2kd1i2p1grPR\ncOlktkVCKvswuHkgP60/yon4W8ftl3q754Jneah5W66raq3539xd+Hm68nzPUAc0Lvck4AthTc3b\noEyAGZN/s4QzJkNlvQEQ1Kbg25aT4E7m3cpyeM/0CAHg48X7HN2i4iUtxTywDesLzrlIYpdp3o6T\nbDp8nud7hVLWq+Af0FqS3wVQhiqldimlMpRS4Vm291BKbVFK7cx8tzJ4VYgizMnZLHaxf7HJaJjV\nirch7Qp0f61w2paTyo3M3Wk2wzOvqVbWk3vb1GDm1hj2n75cQI0rBg6tgJRLUC/3y3cnpqTx5oLd\nNKzmy4iWReAhfqb83uFHAYOBm28hzgIDtNaNgNHA5HyeR4jC1XCImb26N8siF3HRZtHz8AegQu3C\na1t2nJzMhLFDK83CHTkY16UO3m4uTPgruoAaVwzsngvuftc/KeXC58sPcPpSCq8NbFikUlHnd8Wr\nPVrrW/6FaK23aa1jM7/dBXgqpXJYwkWIIi4w3Iypztqts/h/Zqx+p/8UXrusCe4Ml2KsLrJdztuN\nsZ2CWZyZ9qHUS79qUmSH9s559SkLDsUl8O3qQwxpHmjb4jUFqCD68IcAW7XWKZZ2KqXGKKUilFIR\ncXFxBdAcIfJAKXOXf2gFJJ41SxTuW2imz3tXLOzWZa/WtX78FVaLPnBbLfx93Hl3YbTlFbxKkyOr\nTe6c+rnrztFa89q83Xi4OPOfPkXjQW1WVgO+UmqJUirKwsvqT0Ip1QB4F8h2FQit9SStdbjWOtzf\n3z93rReiIDW6E3Q67JoNf79sMiO2KSLj7rNTPtgszJ7DePxrvNxceLJbXTYdOc/y6DMF0LgibPdc\nkwrZWu6cm3y35jAr98XxbM8QKvk4cCZ1HllNnqa17p6XAyulAoHZwL1a65w/TwpRHFRuYNajXfo6\npFyEO74CV8/CblXOlDJ3+dELICPD9OvnYETL6ny3+hATFkXTKaRSkep/LjAZ6aY7J6Rnrn6/6w+e\n4+2Fe+nTMID72tV0XPvywSFdOkqpssACYLzWOvu53UIUN42GmGAf0AgaDy/s1tgmuJOZBXxqh9Wi\nrs5OPNczlL2nLvPHtlK6SMqx9WYhk1x055y8mMzjU7dSs4IX7w1tkr9FbBwov8MyBymlYoC2wAKl\n1LWZKY8DdYD/KqW2Z77smPBbiELSeASUqwl9Jli9Wy4yanU071aGZ17Tr1EVGgf68eHifVy5WgoX\nSdk9B1w8zBKVNkhJS+eRKVtJScvg63vCKeNedLPO53eUzmytdaDW2l1rXVlr3Stz+xtaa2+tddMs\nr1LeKShKhLLV4anIopNCwRY+AVCpvumXtuFhrJOTYnzvME7EJ/Pz+iMOb16RkpFhFq+v092kmbbB\na/N2E3k8nveHNqFOJdvqFJZicosihMiX8AfgRAQcWWNT8XZ1KtIpxJ+Jyw9yMemqgxtXhJyIMGky\nbOzO+XXzMaZuPMajnWvTu2GAgxuXfxLwhSgNmt0DZSrD6vdtrjK+TxiXrlzli5WlKLHa7jng5Aoh\nvawW3RETzytzdnFbnYpFJleONRLwhSgNXD2g7eNmHkFMhE1V6lXxZVCzavyw9gixpSGxmtawZ64Z\niunhZ6Wo5sXZO6no7canI5sVm9FMEvCFKC3CHwDPcrDK9rv85zLvXD8sDYnVLp2A+GNQ1/rD2lX7\nzxJ14hJPda9Lee+ikRjNFhLwhSgt3MtAm8fMDOFTUTZVqVbWk9FtTWK1vacuObiBhez0LvMe0Mhq\n0S+WHyDA14NBzQId3Cj7koAvRGnS6mFw84HVH9hcZVyXOvi4uzBhUQlPrHZqp3mvVD/HYluOXmDj\n4fM81KEWbi7FK4QWr9YKIfLHsxy0esikhzi736YqZb3ceKxLHZbtPcOGQ+cc3MBCdHqXSZDn4Ztj\nsS9XHKSslysjWxWdtMe2koAvRGnTZpyZWLTmI5ur3NeuJlX8PHh17i5S0kroZKzTUVC5YY5Fok9d\nZsme09zXribeRXiCVXYk4AtR2pTxhxajYcev5iGlDTxcnXnjjobsPXWZjxbb9smgWLmaDOcOQEDO\nAf+rlQfxcnMusrlyrJGAL0Rp1O5JQJnlGW3UrV5lRrYK4utVB9l0uITlzD+zB3SGSZCXjePnk5gb\nGcuoVkFFZsnC3JKAL0Rp5FcNmo6CrZPh8imbq73crx5B5b14dsZ2Ll8pQTNwT2eOWsqhS2fSqkM4\nKXioQ3ABNcr+JOALUVrd9jSkp5plGm3k7e7Ch8OaEhufzP/N2+3AxhWw07tM/vtytSzujrucwoyI\n4wxuFkiAX9HLc28rCfhClFblg6HmbaYvPxcrXLWoUY5xXerw25YYFkXZ/umgSDsVBZXrZ5sB9fu1\nh0lNz2Bsp+J7dw8S8IUo3RoPh/MH4cTWXFV7sltdGlXz48XZOzlz+YqDGldAtM4coWO5//7SlatM\nWX+Uvg2rEOxftLNhWiMBX4jSrP5AcHY3d/m54OrsxEfDm5KYksZ/ft9RvNfAvXTCrF+bTf/9j2uP\ncDkljUc71y7ghtmfBHwhSjMPPwjtA1EzIT13D2HrVCrDi33rsTw6jncXFeOFz3NIqRCflMo3qw7R\ns35lGlbLOaFacZDfFa+GKqV2KaUylFLhFvYHKaUSlFLP5+c8QggHajwcks7CweW5rnpv2xqMah3E\nVysP8syv20lNy3BAAx0sh5QKX686REJq2j9J5Iq7/N7hRwGDgVXZ7P8QWJjPcwghHKlOd/AsDzum\n57qqUoo3B4bxr16h/LE9ltHfb+JicjEbrplNSoUzl6/w49ojDGxSldAAn0JqnH3ld4nDPVprixmV\nlFJ3AIeBXfk5hxDCwVzcoOFg2LsAruQiI2ZqEix/C/V2dcal/8JHwxoTcfQ8Q79ax4milD/f2jVl\nk1Lhi+UHSU3P4JnuIQ5qWMFzSB++UqoM8B/gNRvKjlFKRSilIuLi4hzRHCGENY2HQ9oV2Dvfelmt\nzfq4E1vBynehQm1Y8yGDLvzAT/e35OTFKwyauJZdsRcd325rIr6H9+rA+UOW92eTUuFEfDJTNx5j\naItAalb0LoCGFgyrAV8ptUQpFWXhldOij68CH2mtE6wdX2s9SWsdrrUO9/f3z0XThRB2E9gSytW0\nPlonbh9MHgQz7jEPfO/7E8auhuajYfUHtDs2id8faYeLk2LIl+t4de4uYi4kFcgl3CLpPCx5DdJT\nzIxiS7JJqfDZUpMv6IludR3dygJlNd2b1rp7Ho7bGrhTKTUBKAtkKKWuaK0/z8OxhBCOppS5y185\nAS6dBN8qN+7PyIBVE2DVe2ZGap/3zApazpkhpP/HJnCumkCokzOzxz3NhEXRTNlwlCkbjjKwSVXG\ndqpdsH3hy9+ClMtQuRFsnwpdXrre3muujdDJ0qVz5Gwiv22J4Z42NahW1rPg2lsAHJLfU2vd4drX\nSqlXgQQJ9kIUcY2GmS6aqN+h3RPXt6elwpxxsHOGKdPrLZNxMysnJxjwqQn6K96msnLmg2H/4rme\nIXy35jDTNh1j1rYTdAurRL/GVSjn7Yafpyt+nq6U9XTF19MVV2c79jCf3gUR30HLh6BWR/j1bjiw\nBEJ731Qu6paUCh8v2Yers+KxLsV/3P3N8hXwlVKDgM8Af2CBUmq71tr6cu9CiKKnYh2o1gIif70e\n8K9cMsHy8Ero+gp0eM58GrDEyQkGfgYZ6bD8DUhNoGqN9rxS342n6nqzYM8FZkZG8uLe41zB/Zbq\nYQE+tK5VnjbBFWhVqzwVytxaxiZaw8L/mC6nzi+Auw94+8O2yRYC/q4bUipEn7rMnMhYxnasTSWf\n4pszJzv5Cvha69nAbCtlXs3POYQQBajxCFj4LxMIPcvDL3dC3F644ytoOtJ6fSdnuOMLc6e/9mPz\nAnyBkZmvtAoBHOj8BSd9GnEx+SoXk69yNiGF7cfjmRERw0/rjwIQUrkMHev682T3uvh6uNp+DXvn\nw5HV0Pd98CpvtjUZARu+hIQzUKaS2aa1GYPf4I7MbzUf/B1NGTcXHinmOXOyU/yWbBFCOE7DwbBo\nvOmrj4mA5AswagbU6Wb7MZycYfAk82kgNdGM/klPgbQUuHIJl+VvErZwOGG93zZdLlk+MaSmZbDz\nRDwbDp1nw6Fz/LDuCEv2nOaLu1pQv2rOSw8CcPUK/PWSmUTV4v7r25vdC+s+g8hp0P4psy1LSoWM\nDM3bC/fw9+7TPN8zpNjmu7dGAr4Q4jrvimYi1q7ZUKYy3P8nVGmS++MoBZXCLO8L6QmzxsCfz0PM\nZuj/EbiZoY9uLk60qFGeFjXKM65LHTYdPs8T07Yy6Iu1/N/tDRgWXh2VXZcSwPrPIf4o3Dvnxge0\n/iFQvbUZrdPuSdO+zAe2af71+c/vO5i5NYb72tXksc51cn+9xYTk0hFC3KjDsxDSGx5cnLdgb41n\nORj5qxk1s2MGfNsDzh20WLRVrfIseLID4TXL8Z+ZO3n+tx0kp2azpu6lWFj9IYT1h+DOt+5vdg+c\n2w/HN5rvM1MqPL08lZlbY3i2Rwj/G1AfJ6cc/qAUc6ooJTwKDw/XERERhd0MIURBObAEZj5kHvRW\nbWa6g5xcQDmbr8tUgt7vku7kyidL9/PZsv2EVPLhzUENaVjNDw9X5+vHmjUWds2CcZugfC201pyI\nT+b0pSvU9i9DWedU+CAU6t8Bd0wkdfpo4vevp3XSR7x+e0PublOj8H4O+aSU2qK1viWf2S3lJOAL\nIQpV/DHT755w2gT+jDTQ6WY46Nlo0+UT/gAAq/bF8fSv2zmfmIqTgpoVvQkL8OE271hGbb+bnbUe\nYKrPA+w7fZl9py5zOSXtn9NU9fPgXddvaJ20giV9V9PwzzuITgsg9c4p9GtcJbvWFQu2BnzpwxdC\nFK6yQTDcwkxYreG7nrDqfWh6F7i40zHEn8XPdGTDofNEn7rE3lOX2RV7iaGX3iPeyZtRe9rh5HmS\n0AAfBjWvRmiAD5V9PDgYl8Duk5f47VgXOmQsZOPsz+jlcgIa30FQMQ/2uSF3+EKIouvgMpPKoe/7\n0Ophy2WObYDve3Gq5Xi47Rkq+7pn/2BXazImtiIj4SwuV87DsJ+hfk5ZYooHW+/w5aGtEKLoCu4C\nQW3Nw9irFpZS1BqWvg7elQjo8SQBfh45j+JRCqfm95pgD9muclVSScAXQhRdSpnZspdjYetPt+4/\ntByOroGOz/8ztNOqxiPMg2FXrxtSKpQGEvCFEEVbrY5Qo33mXX6WPPtaw9L/A7/q0OI+249Xxt/M\nvK3d9Z+UCqVF6bpaIUTxc+0uP+EURPxwffveBRC7DTr9B1xymXdn4Ocw4hf7trMYkIAvhCj6anWA\nmh1gzUdmpa2MdFj+JlSoA01syPFzs5z6+UswCfhCiOKhy4uQeMasYhU1E87sNnf+N+e4F9mSn5QQ\nonio0Q5qdTJ3+e4+ZoRNg8GF3apiRe7whRDFR5cXIeksXDgMXV8udQ9d8ytfPy2l1FCl1C6lVIZS\nKvymfY2VUusz9+9USpW81QSEEAUrqA2E9jP9+SG9rZcXN8hvl04UMBj4OutGpZQLMAW4R2sdqZSq\nAFzN57mEEAKGTzHvpfTBa37kd8WrPYClmW09gR1a68jMcufycx4hhPiHdOPkmaN+ciGAVkr9pZTa\nqpT6d3YFlVJjlFIRSqmIuLg4BzVHCCGE1Tt8pdQSIMDCrpe01nNyOO5tQEsgCViamdxn6c0FtdaT\ngElgkqfZ2nAhhBC5YzXga6275+G4McAqrfVZAKXUn0Bz4JaAL4QQomA4qkvnL6CRUsor8wFuJ2C3\ng84lhBDCBvkdljlIKRUDtAUWKKX+AtBaXwA+BDYD24GtWusF+W2sEEKIvMvvKJ3ZwOxs9k3BDM0U\nQghRBMj4JiGEKCWK1BKHSqlkYFdht8PB/ICLhd0IB5NrLP5K+vVBybrGUK21j7VCRS15WoIt6zIW\nZ0qpSVrrMYXdDkeSayz+Svr1Qcm6RqWUTYuBF7UunfjCbkABmFfYDSgAco3FX0m/Pigd13iDotal\nE1HS7/CFEMLebI2dRe0Of1JhN0AIIYohm2JnkbrDF0II4ThF7Q5fCCGEg0jAz4FSqrdSKlopdUAp\nNT5zW3ml1GKl1P7M93K21s1l/e+VUmeUUlE3bbepflG/RqVUdaXUcqXU7sxFcp4qgdfooZTapJSK\nzLzG10raNWYp66yU2qaUmu+Iayzk/4tHlFnEabvKMhrG3r/DAqG1zvML6A1EAweA8ZnbygOLgf2Z\n7+VsrVuQ9W24NmfgIBAMuAGRQH1gQpZrHQ+8a2vdzH1W62fu64hJOBd103ab6hf1awSqAM0zv/YB\n9uX2Z1QMrlEBZTK/dgU2Am1K0jVmOc6zwFRgvr3/rRb29QFHgIoWttvtd1hQr7xXLNz/SHb5R2rl\n+toCf2X5/oXMVzRQJXNbFSDa1rqZX1utn6VeTW4N+DbXLw7XmKX+HKBHSb1GwAvYCrQuadcIBGIy\n4XblxoBvl2ssAtd3BMsB326/w4J65adLpxVwQGt9SGudCkwHbs98/ZRZ5ifgjlzUpYDq26IacDzL\n9zGZ2yprrU9mbjsFVAZQSlVVJg10TnWxsX5OLNbPoyJxjUqpmkAzzB1wtvXzqFCvMbOrYztwBlis\ntS5x1wh8DPwbyLipXfa6xsK+Pg0sUUptUUplnahlz99hgchPwC/MX0Ku6zuCNn/adebXsVrrvoVV\n31EcfY1KqTLATOBprfWlnOo7iiOvUWudrrVuirkLbqWUaphTfUdx1DUqpfoDZ7TWW2yt7wgO/nd6\nW+bvsA8wTinVMaf6RZlDH9oW84B4Aqie5fvAzG2nlVJVADLfz+SiLjbWz0l+69vSzgK5RqWUKybY\n/6K1npVlV4m5xmu01vHAcsyzp1zXt6Iwr7E9MFApdQTzSburUmpKLurbolB/h1rrE5nvZzDZgVvl\npn5Rkp+AX5i/BEcG1Gs2A3WVUrWUUm7ACGBu5mt0ZpnRmL5nW+tiY/2c5Le+Le10+DUqpRTwHbBH\na/3hTbtLyjX6K6XKZn7tCfQA9tpaPxcK7Rq11i9orQO11jUz6y7TWt9ta/2ifn1KKW+llM+1r4Ge\nQJSt9YucvHb+YxKvHQJqcf3BaQPgPW58aDrB1rqZ+xxePxfX2BczeuQgZg1fgAqYB1T7gSVA+czt\nVYE/c6qby/rTgJPAVUyX1YM51S9u14hZ81gDOzCL5GwH+pawa2wMbMu8xijgv9bqF7drvKkNnbnx\noa3drrEQf4fBmPgSicnka7V+UX7la6atUqov5oGNM/C91vpNpVQFYAYQBBwFhmmtzyulqgLf6ut9\nf7fUzdzukPp5vkghhCghJLWCEEKUEjLTVgghSgkJ+EIIUUpIwBdCiFLCrgFfWU5wNFSZxFEZSqkc\nE/QrpVyUUnFKqXfs2S4hhBB2DPhKKWdgImY2Wn1gpFKqPmY42mBglQ2H6YEZPjU0c5y2EEIIO7Hn\nHb7F/DZa6z1a62gbjzES+AQ4hkl6BPyTnrRi5tfhSqkVmV/7K5OWdJdS6lul1NFr5YQQQtzIngE/\np/w2VimlPIDumIWFp2GCvzX/w8zsawD8jhl7L4QQwoKi9NC2P7Bca52Mya9yR2Y3UU5uw3ySQGu9\nCLjg2CYKIUTxZc+An1N+m1sopX5QZgWZaxkwRwLdM5MwbcFMW+6auS8tS1s97NhmIYQoNewZ8HNK\nUnQLrfX9WuumWuu+SilfoAMQpLWuqU0ipnFc79Y5ArTI/HpIlsOsBYYBKKV6AkV/iTEhhCgkdgv4\nWv6EiKsAAAClSURBVOs04HHgL2APMENrvUspNUgpFYN5CLtAKfWXheqDMH3xKVm2zQEGKKXcgdeA\nT5RZTzI9S5nXgJ7KrPs6FJP//rK9rkkIIUqSYp1LJ/OPQbrWOk0p1Rb4UpuFCoQQQtzEpbAbkE9B\nwAyllBOQCjxcyO0RQogiq1jf4QshhLBdURqWKYQQwoEk4AshRCkhAV8IIUoJCfhCCFFKSMAXQohS\n4v8B4OiLT7IijxEAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x119d8cf28>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# get data from only the following minute\n",
    "first_minute = walk['2014-08-01 00:00']\n",
    "# calculate a rol1ing mean window of 5 periods\n",
    "means = first_minute.rolling(window=5, center=False).mean()\n",
    "# plot means vs original data\n",
    "means.plot()\n",
    "first_minute.plot();"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nSUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11e10ec50>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# demonstrate the difference between 2, 5 and\n",
    "# 10 interval rolling windows\n",
    "h1w = walk['2014-08-01 00:00']\n",
    "means2 = h1w.rolling(window=2, center=False).mean()\n",
    "means5 = h1w.rolling(window=5, center=False).mean()\n",
    "means10 = h1w.rolling(window=10, center=False).mean()\n",
    "h1w.plot()\n",
    "means2.plot()\n",
    "means5.plot()\n",
    "means10.plot();"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11e10ea20>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# calculate mean average deviation with window of 5 intervals\n",
    "mean_abs_dev = lambda x: np.fabs(x - x.mean()).mean()\n",
    "means = h1w.rolling(window=5, center=False).apply(mean_abs_dev)\n",
    "means.plot();"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nhAR8IYToIP4fvE25+7s7wj8AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1240892e8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# calculate an expanding rolling mean\n",
    "h1w.plot()\n",
    "expanding = h1w.expanding(min_periods=1).mean()\n",
    "expanding.plot();"
   ]
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
